﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ERP.ERPSystem.HumanResources.Dto;
using ERP.Team.HumanResources;
using Volo.Abp.Application.Services;

namespace ERP.ERPSystem.HumanResources
{
    public interface IJobGradeManagementServices:IApplicationService
    {
        /// <summary>
        /// 添加职级管理
        /// </summary>
        /// <param name="jobGradeDto"></param>
        /// <returns></returns>
        Task<int> AddJobGrade(JobGradeDto jobGradeDto);

        /// <summary>
        ///显示职级管理
        /// </summary>
        /// <returns></returns>
        Task<List<JobGradeManagement>> GetJobGrades();

        /// <summary>
        /// 删除职级管理
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task DeleteJobGradee(int id);

        Task<JobGradeDto> GetJobGradeByIdAsync(int id);

        Task UpdateJobGradeAsync(JobGradeDto input);

        /// <summary>
        /// 导出职级数据
        /// </summary>
        /// <param name="jobGradeCoding">职级编码</param>
        /// <param name="jobGradeLevel">职级层次</param>
        /// <param name="jobGradeLevelName">职级层次名称</param>
        /// <param name="salaryRangelower">薪资范围下限</param>
        /// <param name="salaryRangelimits">薪资范围上限</param>
        /// <returns>返回文件字节数组</returns>
        Task<byte[]> ExportJobGrades(
            string jobGradeCoding = null,
            string jobGradeLevel = null,
            string jobGradeLevelName = null,
            int? salaryRangelower = null,
            int? salaryRangelimits = null);
    }
}
